package com.lyf.scm.plan.insfrastructure.db.mapper;

import com.lyf.scm.plan.api.dto.RequirementConfirmationDTO;
import com.lyf.scm.plan.api.dto.RequirementPlanInfoDTO;
import com.lyf.scm.plan.insfrastructure.db.dataobject.RequirementConfirmationDO;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * 供应链确认量
 *
 * @author wangchlei
 * @date 2020/10/29
 */
public interface RequirementConfirmationMapper {
    /**
     * 根据批量条件：收货仓库，skucode，周起始日期     查找实际需要数据
     *
     * @param pageResult
     * @param startDate
     * @param endDate
     * @return {@link List<RequirementConfirmationDO>}
     **/
    List<RequirementConfirmationDO> selectSupplyChainQty(@Param("pageResult") List<RequirementPlanInfoDTO> pageResult, @Param("startDate") Date startDate, @Param("endDate") Date endDate);

    void updateConfirmQty(@Param("requirementConfirmationDTOs") List<RequirementConfirmationDTO> requirementConfirmationDTOs,@Param("userId") Long userId, @Param("userName") String userName);

    /**
     * 批量新增
     *
     * @param requirementConfirmationDOs
     * @return void
     **/
    void batchInsert(List<RequirementConfirmationDO> requirementConfirmationDOs);

    /**
     * 批量更新
     *
     * @param requirementConfirmationDOs
     * @return void
     **/
    void batchUpdate(List<RequirementConfirmationDO> requirementConfirmationDOs);

    /**
     * 批量删除
     *
     * @param ids
     * @return void
     **/
    void batchDelete(List<Long> ids);

    List<RequirementConfirmationDO> pullDataByWarehouse(@Param("warehouseCode") String warehouseCode,@Param("startDate") Date startDate,@Param("endDate") Date endDate);
}
